00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef CIM6BL_HPP
00011 #define CIM6BL_HPP
00012 #include "gridpack/component/data_collection.hpp"
00013 #include "gridpack/parser/dictionary.hpp"
00014 #include "gridpack/utilities/string_utils.hpp"
00015 namespace gridpack {
00016 namespace parser {
00017 template <class _data_struct> class Cim6blParser
00018 {
00019 public:
00020
00021
00022
00023 explicit Cim6blParser()
00024 {
00025 }
00026
00027
00028
00029
00030 virtual ~Cim6blParser()
00031 {
00032 }
00033
00034
00035
00036
00037
00038
00039
00040 void extract(_data_struct &data_struct,
00041 gridpack::component::DataCollection *data, int l_id)
00042 {
00043 double rval;
00044 int ival;
00045 std::string stmp;
00046
00047
00048 if (!data->getValue(LOAD_MODEL,&stmp,l_id)) {
00049 data->addValue(LOAD_MODEL, data_struct.model, l_id);
00050 } else {
00051 data->setValue(LOAD_MODEL, data_struct.model, l_id);
00052 }
00053
00054
00055 if (!data->getValue(LOAD_IT,&ival,l_id)) {
00056 data->addValue(LOAD_IT, data_struct.it, l_id);
00057 } else {
00058 data->setValue(LOAD_IT, data_struct.it, l_id);
00059 }
00060
00061
00062 if (!data->getValue(LOAD_RA,&rval,l_id)) {
00063 data->addValue(LOAD_RA, data_struct.ra, l_id);
00064 } else {
00065 data->setValue(LOAD_RA, data_struct.ra, l_id);
00066 }
00067
00068
00069 if (!data->getValue(LOAD_XA,&rval,l_id)) {
00070 data->addValue(LOAD_XA, data_struct.xa, l_id);
00071 } else {
00072 data->setValue(LOAD_XA, data_struct.xa, l_id);
00073 }
00074
00075
00076 if (!data->getValue(LOAD_XM,&rval,l_id)) {
00077 data->addValue(LOAD_XM, data_struct.xm, l_id);
00078 } else {
00079 data->setValue(LOAD_XM, data_struct.xm, l_id);
00080 }
00081
00082
00083 if (!data->getValue(LOAD_R1,&rval,l_id)) {
00084 data->addValue(LOAD_R1, data_struct.r1, l_id);
00085 } else {
00086 data->setValue(LOAD_R1, data_struct.r1, l_id);
00087 }
00088
00089
00090 if (!data->getValue(LOAD_X1,&rval,l_id)) {
00091 data->addValue(LOAD_X1, data_struct.r1, l_id);
00092 } else {
00093 data->setValue(LOAD_X1, data_struct.r1, l_id);
00094 }
00095
00096
00097 if (!data->getValue(LOAD_R2,&rval,l_id)) {
00098 data->addValue(LOAD_R2, data_struct.r2, l_id);
00099 } else {
00100 data->setValue(LOAD_R2, data_struct.r2, l_id);
00101 }
00102
00103
00104 if (!data->getValue(LOAD_X2,&rval,l_id)) {
00105 data->addValue(LOAD_X2, data_struct.x2, l_id);
00106 } else {
00107 data->setValue(LOAD_X2, data_struct.x2, l_id);
00108 }
00109
00110
00111 if (!data->getValue(LOAD_E1,&rval,l_id)) {
00112 data->addValue(LOAD_E1, data_struct.e1, l_id);
00113 } else {
00114 data->setValue(LOAD_E1, data_struct.e1, l_id);
00115 }
00116
00117
00118 if (!data->getValue(LOAD_SE1,&rval,l_id)) {
00119 data->addValue(LOAD_SE1, data_struct.se1, l_id);
00120 } else {
00121 data->setValue(LOAD_SE1, data_struct.se1, l_id);
00122 }
00123
00124
00125 if (!data->getValue(LOAD_E2,&rval,l_id)) {
00126 data->addValue(LOAD_E2, data_struct.se2, l_id);
00127 } else {
00128 data->setValue(LOAD_E2, data_struct.se2, l_id);
00129 }
00130
00131
00132 if (!data->getValue(LOAD_SE2,&rval,l_id)) {
00133 data->addValue(LOAD_SE2, data_struct.se2, l_id);
00134 } else {
00135 data->setValue(LOAD_SE2, data_struct.se2, l_id);
00136 }
00137
00138
00139 if (!data->getValue(LOAD_MBASE,&rval,l_id)) {
00140 data->addValue(LOAD_MBASE, data_struct.mbase, l_id);
00141 } else {
00142 data->setValue(LOAD_MBASE, data_struct.mbase, l_id);
00143 }
00144
00145
00146 if (!data->getValue(LOAD_PMULT,&rval,l_id)) {
00147 data->addValue(LOAD_PMULT, data_struct.pmult, l_id);
00148 } else {
00149 data->setValue(LOAD_PMULT, data_struct.pmult, l_id);
00150 }
00151
00152
00153 if (!data->getValue(LOAD_H,&rval,l_id)) {
00154 data->addValue(LOAD_H, data_struct.h, l_id);
00155 } else {
00156 data->setValue(LOAD_H, data_struct.h, l_id);
00157 }
00158
00159
00160 if (!data->getValue(LOAD_VI,&rval,l_id)) {
00161 data->addValue(LOAD_VI, data_struct.vi, l_id);
00162 } else {
00163 data->setValue(LOAD_VI, data_struct.vi, l_id);
00164 }
00165
00166
00167 if (!data->getValue(LOAD_TI,&rval,l_id)) {
00168 data->addValue(LOAD_TI, data_struct.ti, l_id);
00169 } else {
00170 data->setValue(LOAD_TI, data_struct.ti, l_id);
00171 }
00172
00173
00174 if (!data->getValue(LOAD_TB,&rval,l_id)) {
00175 data->addValue(LOAD_TB, data_struct.tb, l_id);
00176 } else {
00177 data->setValue(LOAD_TB, data_struct.tb, l_id);
00178 }
00179
00180
00181 if (!data->getValue(LOAD_A,&rval,l_id)) {
00182 data->addValue(LOAD_A, data_struct.a, l_id);
00183 } else {
00184 data->setValue(LOAD_A, data_struct.a, l_id);
00185 }
00186
00187
00188 if (!data->getValue(LOAD_B,&rval,l_id)) {
00189 data->addValue(LOAD_B, data_struct.b, l_id);
00190 } else {
00191 data->setValue(LOAD_B, data_struct.b, l_id);
00192 }
00193
00194
00195 if (!data->getValue(LOAD_D,&rval,l_id)) {
00196 data->addValue(LOAD_D, data_struct.d, l_id);
00197 } else {
00198 data->setValue(LOAD_D, data_struct.d, l_id);
00199 }
00200
00201
00202 if (!data->getValue(LOAD_E,&rval,l_id)) {
00203 data->addValue(LOAD_E, data_struct.e, l_id);
00204 } else {
00205 data->setValue(LOAD_E, data_struct.e, l_id);
00206 }
00207
00208
00209 if (!data->getValue(LOAD_C0,&rval,l_id)) {
00210 data->addValue(LOAD_C0, data_struct.c0, l_id);
00211 } else {
00212 data->setValue(LOAD_C0, data_struct.c0, l_id);
00213 }
00214
00215
00216 if (!data->getValue(LOAD_TNOM,&rval,l_id)) {
00217 data->addValue(LOAD_TNOM, data_struct.tnom, l_id);
00218 } else {
00219 data->setValue(LOAD_TNOM, data_struct.tnom, l_id);
00220 }
00221 }
00222
00223
00224
00225
00226
00227
00228
00229
00230 void parse(std::vector<std::string> &split_line,
00231 gridpack::component::DataCollection *data, int l_id)
00232 {
00233 double rval;
00234 int nstr = split_line.size();
00235 int ival;
00236
00237
00238 std::string stmp, model;
00239 gridpack::utility::StringUtils util;
00240 model = util.trimQuotes(split_line[1]);
00241 util.toUpper(model);
00242 if (!data->getValue(LOAD_MODEL,&stmp,l_id)) {
00243 data->addValue(LOAD_MODEL, model.c_str(), l_id);
00244 } else {
00245 data->setValue(LOAD_MODEL, model.c_str(), l_id);
00246 }
00247
00248
00249 if (nstr > 3) {
00250 if (!data->getValue(LOAD_IT,&ival,l_id)) {
00251 data->addValue(LOAD_IT, atoi(split_line[3].c_str()), l_id);
00252 } else {
00253 data->setValue(LOAD_IT, atoi(split_line[3].c_str()), l_id);
00254 }
00255 }
00256
00257
00258 if (nstr > 4) {
00259 if (!data->getValue(LOAD_RA,&rval,l_id)) {
00260 data->addValue(LOAD_RA, atof(split_line[4].c_str()), l_id);
00261 } else {
00262 data->setValue(LOAD_RA, atof(split_line[4].c_str()), l_id);
00263 }
00264 }
00265
00266
00267 if (nstr > 5) {
00268 if (!data->getValue(LOAD_XA,&rval,l_id)) {
00269 data->addValue(LOAD_XA, atof(split_line[5].c_str()), l_id);
00270 } else {
00271 data->setValue(LOAD_XA, atof(split_line[5].c_str()), l_id);
00272 }
00273 }
00274
00275
00276 if (nstr > 6) {
00277 if (!data->getValue(LOAD_XM,&rval,l_id)) {
00278 data->addValue(LOAD_XM, atof(split_line[6].c_str()), l_id);
00279 } else {
00280 data->setValue(LOAD_XM, atof(split_line[6].c_str()), l_id);
00281 }
00282 }
00283
00284
00285 if (nstr > 7) {
00286 if (!data->getValue(LOAD_R1,&rval,l_id)) {
00287 data->addValue(LOAD_R1, atof(split_line[7].c_str()), l_id);
00288 } else {
00289 data->setValue(LOAD_R1, atof(split_line[7].c_str()), l_id);
00290 }
00291 }
00292
00293
00294 if (nstr > 8) {
00295 if (!data->getValue(LOAD_X1,&rval,l_id)) {
00296 data->addValue(LOAD_X1, atof(split_line[8].c_str()), l_id);
00297 } else {
00298 data->setValue(LOAD_X1, atof(split_line[8].c_str()), l_id);
00299 }
00300 }
00301
00302
00303 if (nstr > 9) {
00304 if (!data->getValue(LOAD_R2,&rval,l_id)) {
00305 data->addValue(LOAD_R2, atof(split_line[9].c_str()), l_id);
00306 } else {
00307 data->setValue(LOAD_R2, atof(split_line[9].c_str()), l_id);
00308 }
00309 }
00310
00311
00312 if (nstr > 10) {
00313 if (!data->getValue(LOAD_X2,&rval,l_id)) {
00314 data->addValue(LOAD_X2, atof(split_line[10].c_str()), l_id);
00315 } else {
00316 data->setValue(LOAD_X2, atof(split_line[10].c_str()), l_id);
00317 }
00318 }
00319
00320
00321 if (nstr > 11) {
00322 if (!data->getValue(LOAD_E1,&rval,l_id)) {
00323 data->addValue(LOAD_E1, atof(split_line[11].c_str()), l_id);
00324 } else {
00325 data->setValue(LOAD_E1, atof(split_line[11].c_str()), l_id);
00326 }
00327 }
00328
00329
00330 if (nstr > 12) {
00331 if (!data->getValue(LOAD_SE1,&rval,l_id)) {
00332 data->addValue(LOAD_SE1, atof(split_line[12].c_str()), l_id);
00333 } else {
00334 data->setValue(LOAD_SE1, atof(split_line[12].c_str()), l_id);
00335 }
00336 }
00337
00338
00339 if (nstr > 13) {
00340 if (!data->getValue(LOAD_E2,&rval,l_id)) {
00341 data->addValue(LOAD_E2, atof(split_line[13].c_str()), l_id);
00342 } else {
00343 data->setValue(LOAD_E2, atof(split_line[13].c_str()), l_id);
00344 }
00345 }
00346
00347
00348 if (nstr > 14) {
00349 if (!data->getValue(LOAD_SE2,&rval,l_id)) {
00350 data->addValue(LOAD_SE2, atof(split_line[14].c_str()), l_id);
00351 } else {
00352 data->setValue(LOAD_SE2, atof(split_line[14].c_str()), l_id);
00353 }
00354 }
00355
00356
00357 if (nstr > 15) {
00358 if (!data->getValue(LOAD_MBASE,&rval,l_id)) {
00359 data->addValue(LOAD_MBASE, atof(split_line[15].c_str()), l_id);
00360 } else {
00361 data->setValue(LOAD_MBASE, atof(split_line[15].c_str()), l_id);
00362 }
00363 }
00364
00365
00366 if (nstr > 16) {
00367 if (!data->getValue(LOAD_PMULT,&rval,l_id)) {
00368 data->addValue(LOAD_PMULT, atof(split_line[16].c_str()), l_id);
00369 } else {
00370 data->setValue(LOAD_PMULT, atof(split_line[16].c_str()), l_id);
00371 }
00372 }
00373
00374
00375 if (nstr > 17) {
00376 if (!data->getValue(LOAD_H,&rval,l_id)) {
00377 data->addValue(LOAD_H, atof(split_line[17].c_str()), l_id);
00378 } else {
00379 data->setValue(LOAD_H, atof(split_line[17].c_str()), l_id);
00380 }
00381 }
00382
00383
00384 if (nstr > 18) {
00385 if (!data->getValue(LOAD_VI,&rval,l_id)) {
00386 data->addValue(LOAD_VI, atof(split_line[18].c_str()), l_id);
00387 } else {
00388 data->setValue(LOAD_VI, atof(split_line[18].c_str()), l_id);
00389 }
00390 }
00391
00392
00393 if (nstr > 19) {
00394 if (!data->getValue(LOAD_TI,&rval,l_id)) {
00395 data->addValue(LOAD_TI, atof(split_line[19].c_str()), l_id);
00396 } else {
00397 data->setValue(LOAD_TI, atof(split_line[19].c_str()), l_id);
00398 }
00399 }
00400
00401
00402 if (nstr > 20) {
00403 if (!data->getValue(LOAD_TB,&rval,l_id)) {
00404 data->addValue(LOAD_TB, atof(split_line[20].c_str()), l_id);
00405 } else {
00406 data->setValue(LOAD_TB, atof(split_line[20].c_str()), l_id);
00407 }
00408 }
00409
00410
00411 if (nstr > 21) {
00412 if (!data->getValue(LOAD_A,&rval,l_id)) {
00413 data->addValue(LOAD_A, atof(split_line[21].c_str()), l_id);
00414 } else {
00415 data->setValue(LOAD_A, atof(split_line[21].c_str()), l_id);
00416 }
00417 }
00418
00419
00420 if (nstr > 22) {
00421 if (!data->getValue(LOAD_B,&rval,l_id)) {
00422 data->addValue(LOAD_B, atof(split_line[22].c_str()), l_id);
00423 } else {
00424 data->setValue(LOAD_B, atof(split_line[22].c_str()), l_id);
00425 }
00426 }
00427
00428
00429 if (nstr > 23) {
00430 if (!data->getValue(LOAD_D,&rval,l_id)) {
00431 data->addValue(LOAD_D, atof(split_line[23].c_str()), l_id);
00432 } else {
00433 data->setValue(LOAD_D, atof(split_line[23].c_str()), l_id);
00434 }
00435 }
00436
00437
00438 if (nstr > 24) {
00439 if (!data->getValue(LOAD_E,&rval,l_id)) {
00440 data->addValue(LOAD_E, atof(split_line[24].c_str()), l_id);
00441 } else {
00442 data->setValue(LOAD_E, atof(split_line[24].c_str()), l_id);
00443 }
00444 }
00445
00446
00447 if (nstr > 25) {
00448 if (!data->getValue(LOAD_C0,&rval,l_id)) {
00449 data->addValue(LOAD_C0, atof(split_line[25].c_str()), l_id);
00450 } else {
00451 data->setValue(LOAD_C0, atof(split_line[25].c_str()), l_id);
00452 }
00453 }
00454
00455
00456 if (nstr > 26) {
00457 if (!data->getValue(LOAD_TNOM,&rval,l_id)) {
00458 data->addValue(LOAD_TNOM, atof(split_line[26].c_str()), l_id);
00459 } else {
00460 data->setValue(LOAD_TNOM, atof(split_line[26].c_str()), l_id);
00461 }
00462 }
00463 }
00464
00465
00466
00467
00468
00469
00470 void store(std::vector<std::string> &split_line,_data_struct &data)
00471 {
00472 std::string sval;
00473 gridpack::utility::StringUtils util;
00474 sval = util.trimQuotes(split_line[1]);
00475 util.toUpper(sval);
00476
00477
00478 strcpy(data.model, sval.c_str());
00479 int nstr = split_line.size();
00480
00481
00482 if (nstr > 2) {
00483 sval = util.clean2Char(split_line[2]);
00484 strcpy(data.id, sval.c_str());
00485 }
00486
00487
00488 if (nstr > 3) {
00489 data.it = atoi(split_line[3].c_str());
00490 }
00491
00492
00493 if (nstr > 4) {
00494 data.ra = atof(split_line[4].c_str());
00495 }
00496
00497 if (nstr > 5) {
00498 data.xa = atof(split_line[5].c_str());
00499 }
00500
00501
00502 if (nstr > 6) {
00503 data.xm = atof(split_line[6].c_str());
00504 }
00505
00506
00507 if (nstr > 7) {
00508 data.r1 = atof(split_line[7].c_str());
00509 }
00510
00511
00512 if (nstr > 8) {
00513 data.x1 = atof(split_line[8].c_str());
00514 }
00515
00516
00517 if (nstr > 9) {
00518 data.r2 = atof(split_line[9].c_str());
00519 }
00520
00521
00522 if (nstr > 10) {
00523 data.x2 = atof(split_line[10].c_str());
00524 }
00525
00526
00527 if (nstr > 11) {
00528 data.e1 = atof(split_line[11].c_str());
00529 }
00530
00531
00532 if (nstr > 12) {
00533 data.se1 = atof(split_line[12].c_str());
00534 }
00535
00536
00537 if (nstr > 13) {
00538 data.e2 = atof(split_line[13].c_str());
00539 }
00540
00541
00542 if (nstr > 14) {
00543 data.se2 = atof(split_line[14].c_str());
00544 }
00545
00546
00547 if (nstr > 15) {
00548 data.mbase = atof(split_line[15].c_str());
00549 }
00550
00551
00552 if (nstr > 16) {
00553 data.pmult = atof(split_line[16].c_str());
00554 }
00555
00556
00557 if (nstr > 17) {
00558 data.h = atof(split_line[17].c_str());
00559 }
00560
00561
00562 if (nstr > 18) {
00563 data.vi = atof(split_line[18].c_str());
00564 }
00565
00566
00567 if (nstr > 19) {
00568 data.ti = atof(split_line[19].c_str());
00569 }
00570
00571
00572 if (nstr > 20) {
00573 data.tb = atof(split_line[20].c_str());
00574 }
00575
00576
00577 if (nstr > 21) {
00578 data.a = atof(split_line[21].c_str());
00579 }
00580
00581
00582 if (nstr > 22) {
00583 data.b = atof(split_line[22].c_str());
00584 }
00585
00586
00587 if (nstr > 23) {
00588 data.d = atof(split_line[23].c_str());
00589 }
00590
00591
00592 if (nstr > 24) {
00593 data.e = atof(split_line[24].c_str());
00594 }
00595
00596
00597 if (nstr > 25) {
00598 data.c0 = atof(split_line[25].c_str());
00599 }
00600
00601
00602 if (nstr > 26) {
00603 data.tnom = atof(split_line[26].c_str());
00604 }
00605 }
00606 };
00607 }
00608 }
00609 #endif